package com.kantboot.functional.im.service;

import com.kantboot.functional.im.domain.entity.FunctionalImWebsocket;
import jakarta.websocket.Session;

import java.util.List;

/**
 * 关于websocket的服务
 */
public interface IFunctionalImWebSocketService {

    /**
     * 生成cid
     */
    String generateCid();

    /**
     * 根据cid获取session
     */
    Session getSession(String cid);

    /**
     * 根据userId获取所有
     */
    List<FunctionalImWebsocket> getAllByUserId(Long userId);

    /**
     * 根据userId获取所有打开的websocket
     */
    List<FunctionalImWebsocket> getAllOpenedByUserId(Long userId);

    /**
     * 添加新的连接
     */
    void openWebSocket(String cid, Session session);

    /**
     * 关闭连接
     */
    void closeWebSocket(String cid);

    /**
     * 发送简单的指令
     */
    void sendSimpleEmit(Session session, String emit,Object data);

    /**
     * 监听消息
     */
    void onWebsocketMessage( String cid,String message);

    /**
     * 心跳
     */
    void heartbeat(String cid);

}
